# _*_ coding : utf-8 _*_
# @Time : 2024/2/4 16:11
# @Author : Jared
# @File : baidu
# @Project : seleniumDouyin
import time

from selenium.webdriver.common.by import By

import seleniumUtil

# 实例化一个util对象
util = seleniumUtil.SeleniumUtil()

# 通过util获取一个浏览器的对象
browser = util.getBrowser()

# 通过浏览器对象跳转到指定网页
browser.get("https://www.baidu.com")

# 睡1秒，等待页面加载
time.sleep(3)

# 通过ID，定位到输入框
# browser.find_element(By.ID,"kw").send_keys("selenium")

# 通过NAME，定位到输入框
# browser.find_element(By.NAME,"wd").send_keys("selenium自动化测试")

# 通过LINK_TEXT(链接文本)，定位到元素
# browser.find_element(By.LINK_TEXT,"贴吧").click()
# browser.find_elements(By.LINK_TEXT,"贴吧")[0].click()

# 通过PARTIAL_LINK_TEXT(链接文本的模糊匹配)，定位到元素（只定位到可点击的a标签）
# browser.find_element(By.PARTIAL_LINK_TEXT,"新闻").click()
# browser.find_elements(By.PARTIAL_LINK_TEXT,"新闻")[0].click()

# CSS_SELECTOR定位,通过ID属性值，需要在id前加上#
# browser.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium通过CSS_SELECTOR定位")
# browser.find_element(By.CSS_SELECTOR,"#su").click()

# CSS_SELECTOR定位,通过NAME属性值，格式为[name = "wd"]
# browser.find_element(By.CSS_SELECTOR,'[name = "wd"]').send_keys("selenium通过CSS_SELECTOR的NAME属性值定位")

# CSS_SELECTOR通过标签属性值定位
# browser.find_element(By.CSS_SELECTOR,"a[href='http://image.baidu.com/']").click()

# CSS_SELECTOR通过标签属性值定位，模糊匹配--包含
# browser.find_element(By.CSS_SELECTOR,"a[href*='image.baidu']").click()

# CSS_SELECTOR通过标签属性值定位，模糊匹配--开头
# browser.find_element(By.CSS_SELECTOR,"a[href^='http://image.baidu']").click()

# CSS_SELECTOR通过标签属性值定位，模糊匹配--结尾
# browser.find_element(By.CSS_SELECTOR,"a[href$='image.baidu.com/']").click()

# 组合定位(标签+属性：标签名.属性值)。"input.s_ipt"--->选择所有class="s_ipt"的<input>标签
# browser.find_element(By.CSS_SELECTOR,"input.s_ipt").send_keys("组合定位")

# 根据标签的父子关系,定位子元素
# 默认定位到第一个a标签
# browser.find_element(By.CSS_SELECTOR,"div#s-top-left>a").click()

# 通过id和a标签组合，默认定位到第一个a标签
# browser.find_element(By.CSS_SELECTOR,"#s-top-left>a").click()

# 通过类选择器和a标签组合，默认定位到第一个a标签
# browser.find_element(By.CSS_SELECTOR,"div.s-top-left-new.s-isindex-wrap>a").click()

# 通过顺序选择器，选择指定的子元素
# browser.find_element(By.CSS_SELECTOR,"div#s-top-left>a:nth-child(3)").click()

# 通过find_elements找到符合条件的所有元素，选择第四个
# browser.find_elements(By.CSS_SELECTOR,"div#s-top-left>a")[3].click()

# 通过first-child选择第一个子元素
# browser.find_element(By.CSS_SELECTOR,"div#s-top-left>a:first-child").click()

# XPATH定位,默认点击第一个a标签。如果是绝对路径，以/开头，如果是相对路径，以//开头
# browser.find_element(By.XPATH,"/html/body/div/div/div[2]/a[3]").click()
# browser.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/a[3]').click()
# browser.find_element(By.XPATH,'//*[@id="s-top-left"]/a[3]').click()

# XPATH和标签属性组合定位
# 和ID组合
# browser.find_element(By.XPATH,'//input[@id="kw"]').send_keys("selenium")
# 和class属性组合
# browser.find_element(By.XPATH, '//input[@class="s_ipt"]').send_keys("selenium")
# 和name属性组合
# browser.find_element(By.XPATH, '//input[@name="wd"]').send_keys("selenium")
# 提示：class的值有多个时，需要全部填写，如//a[@class="soutu-icon soutu-close soutu-close-old"]
# 多个属性组合定位
# browser.find_element(By.XPATH, '//input[@class="s_ipt" and @name="wd" and @id="kw"]').send_keys("selenium")
# 多组数据使用下标定位
browser.find_element(By.XPATH,'//div[@id="s-top-left"]/a[4]').click()


# browser.find_element(By.ID,"su").click()

# 睡1秒，等待页面加载
time.sleep(1)

# 退出
# browser.quit()
